﻿// ***********************************************************************
// Apache 2.0 License
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
//
// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY 
// IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR 
// PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
//
// See the Apache Version 2.0 License for specific language governing
// permissions and limitations under the License.
// ***********************************************************************
// Assembly  : ContractMeow.Models
// File      : IFileAttachmentModel.cs
//
// ***********************************************************************
using System;

namespace ContractMeow.Models.Attachments
{
	/// <summary>
	/// Interface IFileAttachmentModel
	/// </summary>
	public interface IFileAttachmentModel : IAttachmentModel, ICanSupportDownload
	{
		new string Name { get; set; }

		/// <summary>
		/// Gets or sets the download URL.
		/// </summary>
		/// <value>The download URL.</value>
		new Uri DownloadUrl { get; set; }

		/// <summary>
		/// Gets or sets the large icon URL.
		/// </summary>
		/// <value>The large icon URL.</value>
		Uri LargeIconUrl { get; set; }

		/// <summary>
		/// Gets or sets the overlay URL.
		/// </summary>
		/// <value>The overlay URL.</value>
		Uri OverlayUrl { get; set; }

		/// <summary>
		/// Gets or sets the owner id.
		/// </summary>
		/// <value>The owner id.</value>
		long OwnerId { get; set; }

		/// <summary>
		/// Gets or sets the type of the onwer.
		/// </summary>
		/// <value>The type of the onwer.</value>
		string OwnerType { get; set; }

		/// <summary>
		/// Gets or sets the path.
		/// </summary>
		/// <value>The path.</value>
		string Path { get; set; }

		/// <summary>
		/// Gets or sets the preview URL.
		/// </summary>
		/// <value>The preview URL.</value>
		new Uri PreviewUrl { get; set; }

		/// <summary>
		/// Gets or sets the small icon URL.
		/// </summary>
		/// <value>The small icon URL.</value>
		Uri SmallIconUrl { get; set; }

		/// <summary>
		/// Gets or sets the streaming URL.
		/// </summary>
		/// <value>The streaming URL.</value>
		Uri StreamingUrl { get; set; }

		/// <summary>
		/// Gets or sets the UUID.
		/// </summary>
		/// <value>The UUID.</value>
		string Uuid { get; set; }

		/// <summary>
		/// Gets or sets the Y id.
		/// </summary>
		/// <value>The Y id.</value>
		long YId { get; set; }

		/// <summary>
		/// Gets or sets the thumbnail URL.
		/// </summary>
		/// <value>The thumbnail URL.</value>
		Uri ThumbnailUrl { get; set; }

		new FileType FileType { get; }
		string GetExtension();
	}

	public enum FileType
	{
		Unknown,
		Word,
		Excel,
		PowerPoint,
		Pdf,
		Photoshop,
		Illustrator,
		Image,
		Text,
		Video,
		Note,
	}
}
